﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.Serialization.Formatters.Soap;
using System.Runtime.Serialization;
using System.IO;
using Bomberman;

namespace BombermanGame
{
    public partial class Menu : Form
    {
        private bool iniciado = false;
        bool salir = false;
	  public static bool MusicMuted = false;
	  private BombermanJuego bombermanJuego;

	  public BombermanJuego BombermanJuego
	  {
		  set { bombermanJuego = value; }
	  }

        public Menu()
        {
            InitializeComponent();
        }

        public bool Salir
        {
            get { return salir; }
        }

	  public bool Iniciado
	  {
		  get { return iniciado; }
	  }

        public Control Panel
        {
            get { return panel1; }
        }

        private void exitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

      
        private void acercaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            AboutBox1 about = new AboutBox1();
            about.Show();
        }

	  private void SalirButton_Click_1(object sender, EventArgs e)
	  {
		  iniciado = false;
		  if (MessageBox.Show("Quiere Salir Del Juego?", "Bomberman",
			MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
		  {
			  salir = true;
		  }
		  else iniciado = true;
	  }

	  private void MusicaButton_Click(object sender, EventArgs e)
	  {
		  // Cosas a hacer al hacer click sobre el boton de la musica
		  if (MusicaButton.Text == "Musica: On")
		  {
			  MusicaButton.Text = "Musica: Off";
			  MusicMuted = true;
		  }
		  else
		  {
			  MusicaButton.Text = "Musica: On";
			  MusicMuted = false;
		  }
	  }

	  private void Menu_Load(object sender, EventArgs e)
	  {

	  }

	  private void ControlesButton_Click(object sender, EventArgs e)
	  {
		  MessageBox.Show("1 - Para moverte en la dirección que desees utiliza las flechas (Arriba, Abajo, Izquierda, Derecha).\n\n2 - Para Tirar Bomba utiliza (Barra espaciadora).");
	  }

	  private void GuardarButton_Click(object sender, EventArgs e)
	  {

		  Stream miArchivo;
		  SaveFileDialog ventanaGuardar = new SaveFileDialog();

		  ventanaGuardar.InitialDirectory = "Desktop";
		  ventanaGuardar.Filter = "XML files (*.xml)|*.xml|All files (*.*)|*.*";
		  ventanaGuardar.FilterIndex = 1;
		  ventanaGuardar.RestoreDirectory = true;

		  if (ventanaGuardar.ShowDialog() == DialogResult.OK)
		  {
			  if ((miArchivo = ventanaGuardar.OpenFile()) != null)
			  {
				  SoapFormatter formatter = new SoapFormatter();
				  formatter.Serialize(miArchivo, bombermanJuego);
				  miArchivo.Close();
			  }
		  }
		 
	  }

	  private void CargarButton_Click(object sender, EventArgs ex)
	  {

		  Stream miArchivo = null;
		  OpenFileDialog ventanaAbrir = new OpenFileDialog();

		  ventanaAbrir.InitialDirectory = "Desktop";
		  ventanaAbrir.Filter = "XML files (*.xml)|*.xml|All files (*.*)|*.*";
		  ventanaAbrir.FilterIndex = 1;
		  ventanaAbrir.RestoreDirectory = true;

		  if (ventanaAbrir.ShowDialog() == DialogResult.OK)
		  {
			  try
			  {
				  if ((miArchivo = ventanaAbrir.OpenFile()) != null)
				  {
					  using (miArchivo)
					  {
						  SoapFormatter formatter = new SoapFormatter();

						  BombermanJuego bombermanJuegoCargado = (BombermanJuego)formatter.Deserialize(miArchivo);

						  bombermanJuego.CargarJuegoPrevio(bombermanJuegoCargado);

						  miArchivo.Close();
					  }
				  }
			  }
			  catch (Exception e)
			  {
				  MessageBox.Show("Error: fallo la carga del juego. Error Original: " + e.Message);
			  }
		  }

		if (!iniciado)
		{
			iniciado = true;
			ComenzarJuegoButton.Text = "PAUSAR";
		}
	  }

	  private void ComenzarJuegoButton_Click(object sender, EventArgs e)
	  {
		  if (!iniciado)
		  {
			  iniciado = true;
			  ComenzarJuegoButton.Text = "PAUSAR";
		  }
		  else
		  {
			  iniciado = false;
			  ComenzarJuegoButton.Text = "REANUDAR";
		  }
	  }

	  public void Update(int vida)
	  {
		Vida.Text = "Vida: " + vida.ToString() + "/20";
	  }
    }


}
